package com.gitee.liuzhi.demo.other;

import java.util.Scanner;

/**
 * @Author liuzhi
 * @Date 2023/8/26 08:10
 * @Version 1.0
 * @Description Java Switch Demo
 */
public class SwitchDemo {

    /*
    Java Switch 语法
        switch (值){
            case 值1 :
                java语句;
                break;
            case 值2 :
                java语句;
                break;
            case 值3 :
                java语句;
                break;
                    ……
            default: java语句;
        }
     */

    /*
    Java Switch 执行原理 => (电闸原理)
        switch后括号中的内容按照自上而下的顺序和分支case后的值进行一一对比, 如果匹配成功, 则执行该case分支所对应的Java语句
        通过电闸进行理解, 如果值相同, 则电闸连通分支; break就相当于切断电闸, 断掉主干和分支之间的连通, switch语句的执行就彻底结束了
        如果所有的case语句的值和switch的值均无法对应, 那么看是否存在default语句, 如果存在, 则执行default语句, 否则switch语句在没有分支成功匹配的情况下, 会彻底结束
     */

    /*
    Java Switch case击穿现象
        所谓的case击穿现象, 其实和break语句有关
        当某个case分支连通, 执行其后的java语句后, 如果没有遇到break语句, 则会继续执行
        但是无需判断后边case分支的值, 直接执行java语句, 如此直到遇到break语句后, switch的语句彻底执行结束
        这就是我们说的case击穿想想的原理
     */

    public static void main(String[] args) {
        System.out.println("请输入整数");
        Scanner scanner = new Scanner(System.in);
        switch (scanner.nextInt()) {
            case 0:
                System.out.println("print 0");
            case 1:
                System.out.println("print 1");
            case 2:
                System.out.println("print 2");
                break;
            case 3:
                System.out.println("print 3");
            default:
                System.out.println("switch end");
        }

    }

}
